Compartir a través de


Clase T> System.Collections.Generic.HashSet<

En este artículo se proporcionan comentarios adicionales a la documentación de referencia de esta API.

La HashSet<T> clase proporciona operaciones de conjunto de alto rendimiento. Un conjunto es una colección que no contiene elementos duplicados y cuyos elementos no están en ningún orden determinado.

La capacidad de un HashSet<T> objeto es el número de elementos que el objeto puede contener. La capacidad de un HashSet<T> objeto aumenta automáticamente a medida que se agregan elementos al objeto .

La HashSet<T> clase se basa en el modelo de conjuntos matemáticos y proporciona operaciones de conjuntos de alto rendimiento similares a acceder a las claves de las Dictionary<TKey,TValue> colecciones o Hashtable . En términos simples, la HashSet<T> clase se puede considerar como una Dictionary<TKey,TValue> colección sin valores.

Una HashSet<T> colección no está ordenada y no puede contener elementos duplicados. Si el orden o la duplicación de elementos es más importante que el rendimiento de la aplicación, considere la posibilidad de usar la List<T> clase junto con el Sort método .

HashSet<T> proporciona muchas operaciones de conjunto matemático, como la adición de conjuntos (uniones) y la resta establecida. En la tabla siguiente se enumeran las operaciones proporcionadas HashSet<T> y sus equivalentes matemáticos.

Operación HashSet Equivalente matemático
UnionWith Unión o adición de conjuntos
IntersectWith Intersección
ExceptWith Resta establecida
SymmetricExceptWith Diferencia simétrica

Además de las operaciones de conjunto enumerados, la HashSet<T> clase también proporciona métodos para determinar la igualdad de conjuntos, la superposición de conjuntos y si un conjunto es un subconjunto o superconjunto de otro conjunto.

Solo .NET Framework: para objetos muy grandesHashSet<T>, puede aumentar la capacidad máxima a 2 mil millones de elementos en un sistema de 64 bits estableciendo el enabled atributo del elemento true de <gcAllowVeryLargeObjects> configuración en en el entorno en tiempo de ejecución.

La clase HashSet<T> implementa la interfaz ISet<T>.

Operaciones de conjunto de hash y LINQ

LINQ proporciona acceso a las Distinctoperaciones de conjunto , Union, Intersecty Except en cualquier origen de datos que implemente las IEnumerable interfaces o IQueryable . HashSet<T> proporciona una colección más grande y sólida de operaciones de conjunto. Por ejemplo, HashSet<T> proporciona comparaciones como IsSubsetOf y IsSupersetOf.

La principal diferencia entre las operaciones y HashSet<T> las operaciones del conjunto LINQ es que las operaciones del conjunto LINQ siempre devuelven una nueva IEnumerable<T> colección, mientras que los HashSet<T> métodos equivalentes modifican la colección actual.

Normalmente, si debe crear un nuevo conjunto o si la aplicación necesita acceso solo a las operaciones del conjunto proporcionado, el uso de operaciones de conjunto LINQ en cualquier IEnumerable<T> colección o matriz será suficiente. Sin embargo, si la aplicación requiere acceso a operaciones de conjunto adicionales, o si no es deseable o necesario para crear una nueva colección, use la HashSet<T> clase .

En la tabla siguiente se muestran las HashSet<T> operaciones y sus operaciones de conjunto de LINQ equivalentes.

Operación HashSet Equivalente de LINQ
UnionWith Union
IntersectWith Intersect
ExceptWith Except
No se proporciona. Distinct
SymmetricExceptWith No se proporciona.
Overlaps No se proporciona.
IsSubsetOf No se proporciona.
IsProperSubsetOf No se proporciona.
IsSupersetOf No se proporciona.
IsProperSupersetOf No se proporciona.
SetEquals No se proporciona.